/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package educar.models;

import com.mysql.jdbc.PreparedStatement;
import educar.db.JPA;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *
 * @author Matias
 */
public class Alumno {
        private static JPA jpa = new JPA();
        private String nroAlumno;
	private String dni;
	private String nombreYapellido;
        private String direccion;
        
	public Alumno(String nroAlumno, String dni, String nombreYapellido, String direccion){
		this.setNroAlumno(nroAlumno);
		this.setDni(dni);
		this.setNombreYapellido(nombreYapellido);
                this.setDireccion(direccion);
	}
        public Alumno(String[] alumno) {
		this.setNroAlumno(alumno[0]);
		this.setDni(alumno[1]);
		this.setNombreYapellido(alumno[2]);
                this.setDireccion(alumno[3]);
	}

        public static boolean exist(String numeroA){
                try 
                {
		 Alumno.getAlumnoByNroAlumno(numeroA);
			return true;
		} 
                 catch (AlumnoNotFound ex){
                    return false; 
                 }
        }
        
	public static boolean authenticate(String nroAlumno, String dni, String nombreYapellido, String direccion){
		try {
			Alumno a = getAlumnoByNroAlumno(nroAlumno);

			if ((nroAlumno.equals(a.getNroAlumno()))&& (dni.equals(a.getDni())) && (nombreYapellido.equals(a.getNombreYapellido())) && (direccion.equals(a.getDireccion()))) {
				return true;
			}
		} catch (AlumnoNotFound ex) {
			return false;
		}

		return false;
	}

           
        

	public boolean save() {
		try {
			Alumno.getAlumnoByNroAlumno(nroAlumno);
			return false;
		} catch (AlumnoNotFound e1) {
			String[] columns = { "nroAlumno", "DNI", "apellidoYnombre" ,"direccion" };

			PreparedStatement stm = jpa.newRecord("educar_dev.alumno", columns);

			try {
				stm.setString(1, nroAlumno);
				stm.setString(2, dni);
				stm.setString(3, nombreYapellido);
                                stm.setString(4, direccion);
			} catch (SQLException e) {
                                e.printStackTrace();
				return false;
			}

			jpa.create(stm);
			return true;
		}
	}

	public void destroy() {
		jpa.destroy("alumno", "nroAlumno",this.getNroAlumno());
	}
        
        public static void destroyAlumnoByAlumnoname(String nroAlumno) {
		jpa.destroy("alumno", "nroAlumno",nroAlumno );
	}
        
	public static Alumno getAlumnoByNroAlumno(String nroAlumno) throws AlumnoNotFound {
		ResultSet rs = null;
		Alumno a = null;

		rs = jpa.getByField("alumno", "nroAlumno", nroAlumno);

		try {
			if (rs.next()) {
				a = new Alumno(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4));
			} else {
				throw new AlumnoNotFound();
			}
		} catch (SQLException e) {
                    	e.printStackTrace();
		}

		return a;
	}

// <editor-fold defaultstate="collapsed" desc="Get y Set de Alumno">
     
      
   public String getDireccion() {
        return direccion;
    }

    public String getDni() {
        return dni;
    }

    public String getNombreYapellido() {
        return nombreYapellido;
    }

    public String getNroAlumno() {
        return nroAlumno;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public void setDni(String dni) {
        this.dni = dni;
    }

    public void setNombreYapellido(String nombreYapellido) {
        this.nombreYapellido = nombreYapellido;
    }

    public void setNroAlumno(String nroAlumno) {
        this.nroAlumno = nroAlumno;
    }
    
    public boolean setAlumnoByAlumnoname(String oldnroAlumno) {
		jpa.update("alumno", "DNI", dni,"nroAlumno", oldnroAlumno);
                jpa.update("alumno", "apellidoYnombre", nombreYapellido,"nroAlumno", oldnroAlumno);
                jpa.update("alumno", "direccion", direccion,"nroAlumno", oldnroAlumno);
                jpa.update("alumno", "nroAlumno",nroAlumno, "nroAlumno", oldnroAlumno);
		return true;
	}
    
    
// </editor-fold>
	
}

